package com.smartStatus.api.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.smartStatus.api.vo.SysMenuVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.naming.InitialContext;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

/**
 * @ClassName : SysMenus
 * @Author : lby
 * @Date: 2020/12/8 10:47
 * @Description : 系统菜单类
 */
@Data
@TableName("sys_menu")
@ApiModel
public class SysMenu extends Model<SysMenu> {
    /**
     * 菜单名称
     */
    @ApiModelProperty("菜单名称")
//    @TableField(exist = false)
    @TableField("name")
    private String name;

    /**
     * 菜单路由地址
     */
    @ApiModelProperty("菜单路由地址")
//    @TableField(exist = false)
    @TableField("menu_path")
    private String path;

    /**
     * 菜单显示状态
     * true:显示 0
     * false:不显示 1
     */
    @ApiModelProperty("菜单显示状态")
//    @TableField(exist = false)
    @TableField("menu_state")
    private Boolean hidden;

    /**
     * 重定向地址
     */
//    @ApiModelProperty("重定向地址")
//    @TableField(exist = false)
//    private String redirect;

    /**
     * 组件
     */
    @ApiModelProperty("组件")
    @TableField(exist = true)
    private String component;

    /**
     * 组件路径
     */
    @ApiModelProperty("组件路径")
    @TableField(exist = true)
    private String componentPath;


    /**
     * 是否显示
     */
    @ApiModelProperty("字典名称")
    @TableField(exist = false)
    private Boolean alwaysShow;

    /**
     * 路由显示数据
     */
    @ApiModelProperty("路由显示数据")
    @TableField(exist = false)
    private Map meta;

    /**
     * 子菜单集合
     */
    @ApiModelProperty("子菜单集合")
    @TableField(exist = false)
    List<SysMenuVo> children;


    /**
     * 菜单id
     */
    @ApiModelProperty(value = "主键")
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 菜单父类id
     */
    @ApiModelProperty("菜单父类id")
    @TableField(exist = true)
    private Integer menuParentId;

    /**
     * 删除标志
     * 0:存在
     * 1：删除
     */
    @ApiModelProperty("删除标志")
    @TableField(exist = true)
    @TableLogic
    private Integer delFlag;

    /**
     * 图标
     */
    @ApiModelProperty("图标")
    @TableField(exist = true)
    private String icon;

    /**
     * 排序
     */
    @ApiModelProperty("排序")
    @TableField(exist = true)
    private Integer sort;

    /**
     * 创建日期
     */
    @ApiModelProperty("创建日期")
    @TableField(exist = true)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime createTime;

    /**
     * 是否包含子组件
     * 0：不包含
     * 1：包含
     */
    @ApiModelProperty("是否包含子组件")
    @TableField(exist = true)
    private Boolean hasChildren;

    /**
     * 层级名称
     */
    @ApiModelProperty("层级名称")
    @TableField(exist = true)
    private String label;

    /**
     * 菜单类型
     * 0: 目录
     * 1：菜单
     * 2： 按钮
     */
    @ApiModelProperty("菜单类型")
    @TableField(exist = true)
    private Integer type;

    /**
     * 父组件名称
     */
    @ApiModelProperty("父组件名称")
    @TableField(exist = false)
    private String menuParentName;

    /**
     * 开始时间
     */
    @ApiModelProperty("开始时间")
    @TableField(exist = false)
    private String startTime;

    /**
     * 结束时间
     */
    @ApiModelProperty("结束时间")
    @TableField(exist = false)
    private String endTime;

    /**
     * 菜单名称
     */
    @ApiModelProperty("菜单名称")
    @TableField(exist = true)
    private String menuName;


}
